/**
* AllAppointmentsTest.java
*
* Copyright (c) 2011-2016, JFXtras
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the organization nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jfxtras.scene.control.agenda.test;
import java.time.LocalDate;
import java.time.LocalDateTime;
import org.junit.Assert;
import org.junit.Test;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import jfxtras.internal.scene.control.skin.agenda.AllAppointments;
import jfxtras.scene.control.agenda.Agenda;
import jfxtras.test.JFXtrasTest;
public class AllAppointmentsTest extends JFXtrasTest {
@Test
public void regularAppointment1() {
// just an appointment somewhere on a day
ObservableList<Agenda.Appointment> lAppointments = FXCollections.observableArrayList(new Agenda.AppointmentImplLocal()
.withStartLocalDateTime(LocalDateTime.of(2014, 1, 2, 8, 00))
.withEndLocalDateTime(LocalDateTime.of(2014, 1, 2, 11, 30))
);
AllAppointments lAllAppointments = new AllAppointments(lAppointments);
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 1)).size());
Assert.assertEquals(1, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 3)).size());
// others
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 2)).size());
}
@Test
public void regularAppointment2() {
// an appointment covering a whole day, without being a whole day
ObservableList<Agenda.Appointment> lAppointments = FXCollections.observableArrayList(new Agenda.AppointmentImplLocal()
.withStartLocalDateTime(LocalDate.of(2014, 1, 2).atStartOfDay())
.withEndLocalDateTime(LocalDate.of(2014, 1, 2).plusDays(1).atStartOfDay()) // end is exclusive
);
AllAppointments lAllAppointments = new AllAppointments(lAppointments);
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 1)).size());
Assert.assertEquals(1, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 3)).size());
// others
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 2)).size());
}
@Test
public void regularAppointment3() {
// an appointment covering a whole day plus one nano second
ObservableList<Agenda.Appointment> lAppointments = FXCollections.observableArrayList(new Agenda.AppointmentImplLocal()
.withStartLocalDateTime(LocalDate.of(2014, 1, 2).atStartOfDay())
.withEndLocalDateTime(LocalDate.of(2014, 1, 2).plusDays(1).atStartOfDay().plusNanos(1))
);
AllAppointments lAllAppointments = new AllAppointments(lAppointments);
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 1)).size());
Assert.assertEquals(1, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(1, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 3)).size());
// others
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 2)).size());
}
@Test
public void wholedayAppointment1() {
// even though the appointment is set somewhere on the middle of the day, it simply is a whole day appointment
ObservableList<Agenda.Appointment> lAppointments = FXCollections.observableArrayList(new Agenda.AppointmentImplLocal()
.withStartLocalDateTime(LocalDateTime.of(2014, 1, 2, 8, 00))
.withEndLocalDateTime(LocalDateTime.of(2014, 1, 2, 11, 30))
.withWholeDay(true)
);
AllAppointments lAllAppointments = new AllAppointments(lAppointments);
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 1)).size());
Assert.assertEquals(1, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 3)).size());
// others
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 2)).size());
}
@Test
public void wholedayAppointment2() {
// whole day without end date
ObservableList<Agenda.Appointment> lAppointments = FXCollections.observableArrayList(new Agenda.AppointmentImplLocal()
.withStartLocalDateTime(LocalDateTime.of(2014, 1, 2, 8, 00))
.withWholeDay(true)
);
AllAppointments lAllAppointments = new AllAppointments(lAppointments);
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 1)).size());
Assert.assertEquals(1, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 3)).size());
// others
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 2)).size());
}
@Test
public void taskAppointment1() {
// a task has no end date
ObservableList<Agenda.Appointment> lAppointments = FXCollections.observableArrayList(new Agenda.AppointmentImplLocal()
.withStartLocalDateTime(LocalDateTime.of(2014, 1, 2, 8, 00))
);
AllAppointments lAllAppointments = new AllAppointments(lAppointments);
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 1)).size());
Assert.assertEquals(1, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectTaskFor(LocalDate.of(2014, 1, 3)).size());
// others
Assert.assertEquals(0, lAllAppointments.collectRegularFor(LocalDate.of(2014, 1, 2)).size());
Assert.assertEquals(0, lAllAppointments.collectWholedayFor(LocalDate.of(2014, 1, 2)).size());
}
}